package com.baofu.paycore.common.exception;

import com.google.common.base.Objects;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * description:清分交易失败错误码
 * <p>
 * 该枚举中的错误码信息，代表清分银行交易明确失败，不存在其他情况。若清分
 * 返回的错误码不在此枚举中，则需要调用清分相关服务，进一步确认交易状态。
 * </p>
 * <p>
 * 1.
 * </p>
 * User: xin deng  Date: 16/7/11 ProjectName: paycore Version: 1.0
 */
@Getter
@AllArgsConstructor
public enum ClearErrorCode {

    PARAMETER_VALID_NOT_PASS("PARAMETER_VALID_NOT_PASS", "清分参数校验不过"),

    NULL_IS_ILLEGAL_PARAM("NULL_IS_ILLEGAL_PARAM", "清分参数为null是非法的"),

    ORDER_EXITS("ORDER_EXITS", "清分订单已存在"),

    VALUE_NOT_SUPPORT("VALUE_NOT_SUPPORT", "清分不支持的取值"),

    CLEAR_ROUTE_EXCEPTION("CLEAR_ROUTE_EXCEPTION", "清分路由异常"),

    NOT_BRACE_PAY_TYPE("NOT_BRACE_PAY_TYPE", "清分不支的持支付类型"),

    QUERY_EVENT_NO_NOT_EXIST("QUERY_EVENT_NO_NOT_EXIST", "清分查询会计事件号不存在"),

    QUERY_CIF_NOT_SUCCESS("QUERY_CIF_NOT_SUCCESS","亲，您开通的服务不存在"),

    DES_DEC_EXCEPTION("DES_DEC_EXCEPTION","清分3DES解密异常"),

    REFUND_CFG_NOT_EXISTS("REFUND_CFG_NOT_EXISTS", "清分退款配置信息不存在"),

    QUICK_PAY_CIF_BANK_INFO_NULL("QUICK_PAY_CIF_BANK_INFO_NULL", "清分快捷支付银行信息为空"),

    NOT_CONFIG_BANK_ROUTE("NOT_CONFIG_BANK_ROUTE", "清分未配置此银行路由"),

    ;

    private String code;

    private String desc;

    /**
     * 是否置为失败
     * @param errorCode     错误码
     * @return              true    可以重试
     *                      false   不能重试
     */
    public static boolean from(String errorCode){
        for(ClearErrorCode clearErrorCode : ClearErrorCode.values()){
            if(Objects.equal(errorCode, clearErrorCode.getCode())){
                return true;
            }
        }
        return false;
    }
}
